using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("AdventureMission")]
	public class AdventureMission : MonoClass
	{
		[Attribute38("AdventureMission.WingProgress")]
		public class WingProgress : MonoClass
		{
			public int m_wing => method_2<int>("m_wing");

			public int m_progress => method_2<int>("m_progress");

			public ulong m_flags => method_2<ulong>("m_flags");

			public int Wing => method_11<int>("get_Wing", Array.Empty<object>());

			public int Progress => method_11<int>("get_Progress", Array.Empty<object>());

			public ulong Flags => method_11<ulong>("get_Flags", Array.Empty<object>());

			public WingProgress(IntPtr address, string className)
				: base(address, className)
			{
			}

			public WingProgress(IntPtr address)
				: this(address, "WingProgress")
			{
			}

			public bool IsEmpty()
			{
				return method_11<bool>("IsEmpty", Array.Empty<object>());
			}

			public bool IsOwned()
			{
				return method_11<bool>("IsOwned", Array.Empty<object>());
			}

			public bool MeetsProgressRequirement(int requiredProgress)
			{
				return method_11<bool>("MeetsProgressRequirement", new object[1] { requiredProgress });
			}

			public bool MeetsFlagsRequirement(ulong requiredFlags)
			{
				return method_11<bool>("MeetsFlagsRequirement", new object[1] { requiredFlags });
			}

			public bool MeetsProgressAndFlagsRequirements(int requiredProgress, ulong requiredFlags)
			{
				return method_10<bool>("MeetsProgressAndFlagsRequirements", new Class276.Enum20[2]
				{
					Class276.Enum20.I4,
					Class276.Enum20.U8
				}, new object[2] { requiredProgress, requiredFlags });
			}

			public bool MeetsProgressAndFlagsRequirements(WingProgress requiredProgress)
			{
				return method_10<bool>("MeetsProgressAndFlagsRequirements", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { requiredProgress });
			}

			public void SetProgress(int progress)
			{
				method_8("SetProgress", progress);
			}

			public void SetFlags(ulong flags)
			{
				method_8("SetFlags", flags);
			}

			public new string ToString()
			{
				return method_13("ToString");
			}

			public WingProgress Clone()
			{
				return method_14<WingProgress>("Clone", Array.Empty<object>());
			}
		}

		public int m_scenarioID => method_2<int>("m_scenarioID");

		public string m_description => method_4("m_description");

		public WingProgress m_requiredProgress => method_3<WingProgress>("m_requiredProgress");

		public WingProgress m_grantedProgress => method_3<WingProgress>("m_grantedProgress");

		public int ScenarioID => method_11<int>("get_ScenarioID", Array.Empty<object>());

		public string Description => method_13("get_Description");

		public WingProgress RequiredProgress => method_14<WingProgress>("get_RequiredProgress", Array.Empty<object>());

		public WingProgress GrantedProgress => method_14<WingProgress>("get_GrantedProgress", Array.Empty<object>());

		public AdventureMission(IntPtr address, string className)
			: base(address, className)
		{
		}

		public AdventureMission(IntPtr address)
			: this(address, "AdventureMission")
		{
		}

		public bool HasRequiredProgress()
		{
			return method_11<bool>("HasRequiredProgress", Array.Empty<object>());
		}

		public bool HasGrantedProgress()
		{
			return method_11<bool>("HasGrantedProgress", Array.Empty<object>());
		}

		public new string ToString()
		{
			return method_13("ToString");
		}
	}
}
